﻿/****************************************************************************
*	Copyright (c) 2013, changyuan.game
*	All rights reserved.
*****************************************************************************
*	filename:	RapidJsonHelper.h
*  author:		ye.tao
*	e-mail:		yetao@11game.com
*	created:	2014/06/16
*	descript:  rapidJson数据读取与写入封装
****************************************************************************/
#ifndef __RAPID_JSON_HELPER_H__
#define __RAPID_JSON_HELPER_H__

#include "cocos2d.h"
#include "json\document.h"
#include "json\rapidjson.h"
#include "json\stringbuffer.h"
#include "json\writer.h"
#include <vector>
#include <string>
#include "Singleton.h"
USING_NS_CC;

#define RAPID_JSON_HELPER	RapidJsonHelper::getInstance()
#define RAPID_JSON_DEFINE(json)	rapidjson::Document json; json.SetObject();

class RapidJsonHelper : public Singleton<RapidJsonHelper>  
{
public:
	RapidJsonHelper();
	virtual ~RapidJsonHelper();

	// json与string之间的相互转换
	std::string transJsonToString(const rapidjson::Value& root);
	void transStringToJson(const std::string& str, rapidjson::Document & resultJson);


	// 获取json数据相关接口
	int getInt(const char* key, const rapidjson::Value& root);
	int64_t getInt64(const char* key, const rapidjson::Value& root);
	uint64_t getUint64(const char* key, const rapidjson::Value& root);
	float getFloat(const char* key, const rapidjson::Value& root);
	bool getBool(const char* key, const rapidjson::Value& root);
	const char* getCString(const char* key, const rapidjson::Value& root);
	std::string getString(const char* key, const rapidjson::Value& root);
	int getArrayCount(const char* key, const rapidjson::Value& root);


	// 设置json数据相关接口
	void addInt(const char * key, const int value, rapidjson::Document & document);
	void addInt64(const char * key, const int64_t value, rapidjson::Document & document);
	void addUint64(const char * key, const uint64_t value, rapidjson::Document & document);
	void addFloat(const char * key, const float value, rapidjson::Document & document);
	void addBool(const char * key, const bool value, rapidjson::Document & document);
	void addCString(const char * key, const char* value, rapidjson::Document & document);
	void addString(const char * key, const std::string value, rapidjson::Document & document);

};


#endif  //__RAPID_JSON_HELPER_H__